package com.ctshk.rpc.certificate.service;

import com.ctshk.common.dto.Result;
import com.ctshk.common.model.PageResponse;
import com.ctshk.rpc.certificate.dto.CertificateAcceptDTO;
import com.ctshk.rpc.certificate.dto.CertificateMacauTravelDTO;
import com.ctshk.rpc.certificate.req.*;

/**
 * <p>
 * 赴澳门个人旅游签注 服务类
 * </p>
 *
 * @author 谢诗宏
 * @since 2021-03-25
 */
public interface ICertificateMacauTravelService {

    /**
     * 赴澳门个人旅游签注登记
     * @param certificateMacauTravelReq
     * @param userId
     * @return
     */
    Result saveMacauTravel(CertificateMacauTravelReq certificateMacauTravelReq, Long userId);

    /**
     * 赴澳门个人旅游签注信息详情
     * @param id
     * @return
     */
    CertificateMacauTravelDTO queryDetail(Long id);

    /**
     * 修改赴澳门个人旅游签注信息
     * @param certificateMacauTravelReq
     * @param userId
     * @return
     */
    Result updateMacauTravel(CertificateMacauTravelReq certificateMacauTravelReq, Long userId);

    /**
     * 处理赴澳门个人旅游签注预约信息
     * @param procReserveMacauTravelReq
     * @param userId
     * @return
     */
    Result procReserveMacauTravel(ProcCommonCertificateReq procReserveMacauTravelReq, Long userId);

    /**
     * 证件受理列表
     * @param acceptPageReq
     * @return
     */
    PageResponse<CertificateAcceptDTO> queryCertificateAcceptList(CertificateAcceptPageReq acceptPageReq);

    /**
     * 查询预约信息
     * @param queryAppointmentInfoReq
     * @param userId
     * @return
     */
    Result queryAppointmentInfo(QueryAppointmentInfoReq queryAppointmentInfoReq, Long userId);


    /**
     * 取消预约
     *
     * @param id
     * @param userId
     * @return
     */
    Result cancelAppointment(Long id, Long userId);
}
